预训练阶段语言模型在网络上学了很多东西,却不知道使用方法
而在微调阶段会让语言模型接收人类老师的教导,发挥它的潜力
![[Pasted image 20250730213913.png]]
为什么要标注出用户和 AI 呢?
![[Pasted image 20250730214525.png]]
![[Pasted image 20250730214640.png]]
所以 ChatGPT 不是以“你是谁”进行文字接龙的,而是“USER:你是谁 AI:”进行文字接龙
第二阶段微调成功的关键是用第一阶段预训练的参数初始化
![[Pasted image 20250731122736.png]]
因为是用预训练的参数作为初始化参数,所以微调过程的最佳化产生的参数不会和预训练的参数差太多
为什么说微调成功的关键是用预训练的参数初始化?
不会仅凭简单的规则做文字接龙,如:看到“最”就答“玉山”这样的简单找出来的参数是通不过海量数据验证的
例如在多种语言上做预训练后,只要教某一个语言的某一个任务,模型自动学会其他语言的同样任务
![[Pasted image 20250731131340.png]]
例如:LoRA
Adapter 是指微调最佳化过程中不改变预训练的参数,而是新加少量参数,微调最佳化的过程是找寻这些新加少量未知参数的值
![[Pasted image 20250731123312.png]]
这样做的好处是:
各种 Adapter:随着插入新参数的位置不同、数量不同,有各种各样的 Adapter,LoRA 只是其中一种
![[Pasted image 20250731131731.png]]
如:BERT 系列
世界上有这么多任务,要把每一个任务微调一个模型吗?太麻烦了
直接打造一个通才,一劳永逸解决所有任务,让模型做什么任务,直接告诉它
![[Pasted image 20250731132253.png]]
不一定一次使用很多类型的任务,也可以逐步微调,如先学习翻译、再学习编修
![[Pasted image 20250731132649.png]]
但是微调的资料标注多了,它会忘记之前的资料,就需要让模型进行复习,如何进行复习:
通才更发挥模型的举一反三能力:
![[Pasted image 20250731133317.png]]
从上图可以看出:训练的任务越多,模型在没见过的任务上的表现越好
对于 PaLM 540B,指令微调只需要 0.2% 的预训练计算量
指令微调并不需要太多的资料量
我自己也能做指令微调吗?
OpenAI 有大量的线上使用者,所以知道用户会问什么问题
有人提出可以对 ChatGPT 做逆向工程,看看 ChatGPT 用了什么微调资料
![[Pasted image 20250731205518.png]]
不过下面的文献指出通过这种方式获得的微调资料并没有很优质,不过有总比没有好
Meta 开源了 LLaMA
两个问题解决后,现在人人都可以 fine-tune 大型语言模型的时代开始了!